# 注意：以下权限是相互独立的，互不影响。eg：如果permission是5，那也是黑名单
from werkzeug.security import check_password_hash, generate_password_hash

from App.ext import db
from App.models import BaseModel
from App.models.admin.admin_user_model import PERMISSION_NONE

COMMON_USER = 0     # 普通用户，可以正常下单
BLACK_USER = 1      # 黑名单用户，只可读
VIP_USER = 2        # vip用户，可以修改订单


class MovieUser(BaseModel):
    username = db.Column(db.String(32) , unique=True)
    _password = db.Column(db.String(256))
    phone = db.Column(db.String(32) , unique=True)
    is_delete = db.Column(db.Boolean , default=False)
    permission = db.Column(db.Integer , default=PERMISSION_NONE)        #权限

    @property
    def password(self):
        raise Exception('不给你访问')

    @password.setter
    def password(self , password_value_parameter):
        self._password = generate_password_hash(password_value_parameter)

    # 密码哈希检测
    def check_password(self , password_value_parameter):
        return check_password_hash(self._password , password_value_parameter)

    def check_permission(self , permission):        # 用于判断用户是否拥有所给的形参的权限（不特指某一种，是可变的）
        return permission & self.permission == permission

